package com.shimao.celnet.payment.model;

import org.hibernate.validator.constraints.NotEmpty;

import javax.persistence.Column;
import java.io.Serializable;

public class PInvoice  extends BaseModel implements Serializable {


    /**
     * 业务类型:
     */
    @NotEmpty(message = "不能为空")
    private String businessType;

    /**
     * 发票种类编码004:增值税专用发票，007:增值税普通发票，026：增值税电子发票，025：增值税卷式发票 
     */
    @NotEmpty(message = "不能为空")
    private String invoiceTypeCode;

    /**
     * 组织机构代码不为空表示所开票归属于当前机构 
     */
    private String organizationCode;

    /**
     * 开票流水号唯一标志开票请求。支持数字字母下划线组合。
     */
    private String serialNo;

    /**
     * 特殊票种标记00：普通发票 02：农业发票 默认：00
     */
    private String invoiceSpecialMark;

    /**
     * 销方单位税号
     */
    private String sellerTaxNo;

    /**
     * 开票点编码
     */
    private String invoiceYerminalCode;

    /**
     * 购方单位税号
     */
    private String buyerTaxNo;

    /**
     * 购方单位名称
     */
    private String buyerName;

    /**
     * 购方地址及电话专票必填
     */
    private String buyerAddressPhone;

    /**
     * 购方开户行及账号专票必填
     */
    private String buyerBankAccount;

    /**
     * 开票人
     */
    private String drawer;

    /**
     * 复核人
     */
    private String checker;

    /**
     * 收款人
     */
    private String payee;

    /**
     * 开票类型0:正数发票（蓝票） 1：负数发票（红票）
     */
    @Column(name = "invoice_type")
    private String invoiceType;

    /**
     * 清单标志 0：无清单 1：带清单 （发票明细大于等于8行必须带清单）”
     */
    private String invoiceListMark;

    /**
     * 红字信息表编号
     */
    private String redInfoNo;

    /**
     * 原发票代码(开红票时传入)
     */
    private String originalInvoiceCode;

    /**
     * 原发票号码(开红票时传入)
     */
    private String originalInvoiceNo;

    /**
     * 征税方式 0：普通征税，2：差额征税
     */
    private String taxationMode;

    /**
     * 扣除额保留两位小数
     */
    private String deductibleAmount;

    /**
     * 合计金额保留两位小数
     */
    private String invoiceTotalPrice;

    /**
     * 合计税额保留两位小数
     */
    private String invoiceTotalTax;

    /**
     * 价税合计保留两位小数
     */
    private String invoiceTotalPriceTax;

    /**
     * 签名值参数默认为：0000004282000000
     */
    private String signatureParameter;

    /**
     * 设备类型 0税控服务器，1税控盘
     */
    private String deviceType;

    /**
     * 税控盘编号设备类型为1时必填
     */
    private String taxDiskNo;

    /**
     * 税控盘口令设备类型为1时必填
     */
    private String taxDiskKey;

    /**
     * 税务数字证书密码设备类型为1时必填
     */
    private String taxDiskPassword;

    /**
     * 商品编码版本号
     */
    private String goodsCodeVersion;

    /**
     * 综合税率
     */
    private String consolidatedTaxRate;

    /**
     * 通知单编号
     */
    private String notificationNo;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 发票代码税控baiwang.invoice.open（发票开具）返回
     */
    private String invoiceCode;

    /**
     * 发票号码税控baiwang.invoice.open（发票开具）返回
     */
    private String invoiceNo;

    /**
     * 开票日期税控baiwang.invoice.open（发票开具）返回，格式：yyyyMMddHHmmss
     */
    private String invoiceDate;

    /**
     * 税控码税控baiwang.invoice.open（发票开具）返回，对应发票的密码区
     */
    private String taxControlCode;

    /**
     * 校验码税控baiwang.invoice.open（发票开具）返回
     */
    private String invoiceCheckCode;

    /**
     * 打印类型税票打印：（税控盘必填）0：发票打印，1：清单打印
     */
    private String invoicePrintType;

    /**
     * 打印日期税票打印：（税控盘必填）默认为1
     */
    private String invoicePrintMode;

    /**
     * 打印方式格式：yyyyMMddHHmmss
     */
    private String invoicePrintDate;

    /**
     * 二维码税控baiwang.invoice.open（发票开具）返回
     */
    private String invoiceQrcode;

    /**
     * 邮箱
     */
    private String invoiceEmail;

    public String getInvoiceEmail() {
        return invoiceEmail;
    }

    public void setInvoiceEmail(String invoiceEmail) {
        this.invoiceEmail = invoiceEmail;
    }

    /**
     * 获取业务类型:
     *
     * @return business_type - 业务类型:
     */
    public String getBusinessType() {
        return businessType;
    }

    /**
     * 设置业务类型:
     *
     * @param businessType 业务类型:
     */
    public void setBusinessType(String businessType) {
        this.businessType = businessType;
    }

    /**
     * 获取发票种类编码004:增值税专用发票，007:增值税普通发票，026：增值税电子发票，025：增值税卷式发票 
     *
     * @return invoice_type_code - 发票种类编码004:增值税专用发票，007:增值税普通发票，026：增值税电子发票，025：增值税卷式发票 
     */
    public String getInvoiceTypeCode() {
        return invoiceTypeCode;
    }

    /**
     * 设置发票种类编码004:增值税专用发票，007:增值税普通发票，026：增值税电子发票，025：增值税卷式发票 
     *
     * @param invoiceTypeCode 发票种类编码004:增值税专用发票，007:增值税普通发票，026：增值税电子发票，025：增值税卷式发票 
     */
    public void setInvoiceTypeCode(String invoiceTypeCode) {
        this.invoiceTypeCode = invoiceTypeCode;
    }

    /**
     * 获取组织机构代码不为空表示所开票归属于当前机构 
     *
     * @return organization_code - 组织机构代码不为空表示所开票归属于当前机构 
     */
    public String getOrganizationCode() {
        return organizationCode;
    }

    /**
     * 设置组织机构代码不为空表示所开票归属于当前机构 
     *
     * @param organizationCode 组织机构代码不为空表示所开票归属于当前机构 
     */
    public void setOrganizationCode(String organizationCode) {
        this.organizationCode = organizationCode;
    }

    /**
     * 获取开票流水号唯一标志开票请求。支持数字字母下划线组合。
     *
     * @return serial_no - 开票流水号唯一标志开票请求。支持数字字母下划线组合。
     */
    public String getSerialNo() {
        return serialNo;
    }

    /**
     * 设置开票流水号唯一标志开票请求。支持数字字母下划线组合。
     *
     * @param serialNo 开票流水号唯一标志开票请求。支持数字字母下划线组合。
     */
    public void setSerialNo(String serialNo) {
        this.serialNo = serialNo;
    }

    /**
     * 获取特殊票种标记00：普通发票 02：农业发票 默认：00
     *
     * @return invoice_special_mark - 特殊票种标记00：普通发票 02：农业发票 默认：00
     */
    public String getInvoiceSpecialMark() {
        return invoiceSpecialMark;
    }

    /**
     * 设置特殊票种标记00：普通发票 02：农业发票 默认：00
     *
     * @param invoiceSpecialMark 特殊票种标记00：普通发票 02：农业发票 默认：00
     */
    public void setInvoiceSpecialMark(String invoiceSpecialMark) {
        this.invoiceSpecialMark = invoiceSpecialMark;
    }

    /**
     * 获取销方单位税号
     *
     * @return seller_tax_no - 销方单位税号
     */
    public String getSellerTaxNo() {
        return sellerTaxNo;
    }

    /**
     * 设置销方单位税号
     *
     * @param sellerTaxNo 销方单位税号
     */
    public void setSellerTaxNo(String sellerTaxNo) {
        this.sellerTaxNo = sellerTaxNo;
    }

    /**
     * 获取开票点编码
     *
     * @return invoice_yerminal_code - 开票点编码
     */
    public String getInvoiceYerminalCode() {
        return invoiceYerminalCode;
    }

    /**
     * 设置开票点编码
     *
     * @param invoiceYerminalCode 开票点编码
     */
    public void setInvoiceYerminalCode(String invoiceYerminalCode) {
        this.invoiceYerminalCode = invoiceYerminalCode;
    }

    /**
     * 获取购方单位税号
     *
     * @return buyer_tax_no - 购方单位税号
     */
    public String getBuyerTaxNo() {
        return buyerTaxNo;
    }

    /**
     * 设置购方单位税号
     *
     * @param buyerTaxNo 购方单位税号
     */
    public void setBuyerTaxNo(String buyerTaxNo) {
        this.buyerTaxNo = buyerTaxNo;
    }

    /**
     * 获取购方单位名称
     *
     * @return buyer_name - 购方单位名称
     */
    public String getBuyerName() {
        return buyerName;
    }

    /**
     * 设置购方单位名称
     *
     * @param buyerName 购方单位名称
     */
    public void setBuyerName(String buyerName) {
        this.buyerName = buyerName;
    }

    /**
     * 获取购方地址及电话专票必填
     *
     * @return buyer_address_phone - 购方地址及电话专票必填
     */
    public String getBuyerAddressPhone() {
        return buyerAddressPhone;
    }

    /**
     * 设置购方地址及电话专票必填
     *
     * @param buyerAddressPhone 购方地址及电话专票必填
     */
    public void setBuyerAddressPhone(String buyerAddressPhone) {
        this.buyerAddressPhone = buyerAddressPhone;
    }

    /**
     * 获取购方开户行及账号专票必填
     *
     * @return buyer_bank_account - 购方开户行及账号专票必填
     */
    public String getBuyerBankAccount() {
        return buyerBankAccount;
    }

    /**
     * 设置购方开户行及账号专票必填
     *
     * @param buyerBankAccount 购方开户行及账号专票必填
     */
    public void setBuyerBankAccount(String buyerBankAccount) {
        this.buyerBankAccount = buyerBankAccount;
    }

    /**
     * 获取开票人
     *
     * @return drawer - 开票人
     */
    public String getDrawer() {
        return drawer;
    }

    /**
     * 设置开票人
     *
     * @param drawer 开票人
     */
    public void setDrawer(String drawer) {
        this.drawer = drawer;
    }

    /**
     * 获取复核人
     *
     * @return checker - 复核人
     */
    public String getChecker() {
        return checker;
    }

    /**
     * 设置复核人
     *
     * @param checker 复核人
     */
    public void setChecker(String checker) {
        this.checker = checker;
    }

    /**
     * 获取收款人
     *
     * @return payee - 收款人
     */
    public String getPayee() {
        return payee;
    }

    /**
     * 设置收款人
     *
     * @param payee 收款人
     */
    public void setPayee(String payee) {
        this.payee = payee;
    }

    /**
     * 获取开票类型0:正数发票（蓝票） 1：负数发票（红票）
     *
     * @return invoice_type - 开票类型0:正数发票（蓝票） 1：负数发票（红票）
     */
    public String getInvoiceType() {
        return invoiceType;
    }

    /**
     * 设置开票类型0:正数发票（蓝票） 1：负数发票（红票）
     *
     * @param invoiceType 开票类型0:正数发票（蓝票） 1：负数发票（红票）
     */
    public void setInvoiceType(String invoiceType) {
        this.invoiceType = invoiceType;
    }

    /**
     * 获取清单标志 0：无清单 1：带清单 （发票明细大于等于8行必须带清单）”
     *
     * @return invoice_list_mark - 清单标志 0：无清单 1：带清单 （发票明细大于等于8行必须带清单）”
     */
    public String getInvoiceListMark() {
        return invoiceListMark;
    }

    /**
     * 设置清单标志 0：无清单 1：带清单 （发票明细大于等于8行必须带清单）”
     *
     * @param invoiceListMark 清单标志 0：无清单 1：带清单 （发票明细大于等于8行必须带清单）”
     */
    public void setInvoiceListMark(String invoiceListMark) {
        this.invoiceListMark = invoiceListMark;
    }

    /**
     * 获取红字信息表编号
     *
     * @return red_info_no - 红字信息表编号
     */
    public String getRedInfoNo() {
        return redInfoNo;
    }

    /**
     * 设置红字信息表编号
     *
     * @param redInfoNo 红字信息表编号
     */
    public void setRedInfoNo(String redInfoNo) {
        this.redInfoNo = redInfoNo;
    }

    /**
     * 获取原发票代码(开红票时传入)
     *
     * @return original_invoice_code - 原发票代码(开红票时传入)
     */
    public String getOriginalInvoiceCode() {
        return originalInvoiceCode;
    }

    /**
     * 设置原发票代码(开红票时传入)
     *
     * @param originalInvoiceCode 原发票代码(开红票时传入)
     */
    public void setOriginalInvoiceCode(String originalInvoiceCode) {
        this.originalInvoiceCode = originalInvoiceCode;
    }

    /**
     * 获取原发票号码(开红票时传入)
     *
     * @return original_invoice_no - 原发票号码(开红票时传入)
     */
    public String getOriginalInvoiceNo() {
        return originalInvoiceNo;
    }

    /**
     * 设置原发票号码(开红票时传入)
     *
     * @param originalInvoiceNo 原发票号码(开红票时传入)
     */
    public void setOriginalInvoiceNo(String originalInvoiceNo) {
        this.originalInvoiceNo = originalInvoiceNo;
    }

    /**
     * 获取征税方式 0：普通征税，2：差额征税
     *
     * @return taxation_mode - 征税方式 0：普通征税，2：差额征税
     */
    public String getTaxationMode() {
        return taxationMode;
    }

    /**
     * 设置征税方式 0：普通征税，2：差额征税
     *
     * @param taxationMode 征税方式 0：普通征税，2：差额征税
     */
    public void setTaxationMode(String taxationMode) {
        this.taxationMode = taxationMode;
    }

    /**
     * 获取扣除额保留两位小数
     *
     * @return deductible_amount - 扣除额保留两位小数
     */
    public String getDeductibleAmount() {
        return deductibleAmount;
    }

    /**
     * 设置扣除额保留两位小数
     *
     * @param deductibleAmount 扣除额保留两位小数
     */
    public void setDeductibleAmount(String deductibleAmount) {
        this.deductibleAmount = deductibleAmount;
    }

    /**
     * 获取合计金额保留两位小数
     *
     * @return invoice_total_price - 合计金额保留两位小数
     */
    public String getInvoiceTotalPrice() {
        return invoiceTotalPrice;
    }

    /**
     * 设置合计金额保留两位小数
     *
     * @param invoiceTotalPrice 合计金额保留两位小数
     */
    public void setInvoiceTotalPrice(String invoiceTotalPrice) {
        this.invoiceTotalPrice = invoiceTotalPrice;
    }

    /**
     * 获取合计税额保留两位小数
     *
     * @return invoice_total_tax - 合计税额保留两位小数
     */
    public String getInvoiceTotalTax() {
        return invoiceTotalTax;
    }

    /**
     * 设置合计税额保留两位小数
     *
     * @param invoiceTotalTax 合计税额保留两位小数
     */
    public void setInvoiceTotalTax(String invoiceTotalTax) {
        this.invoiceTotalTax = invoiceTotalTax;
    }

    /**
     * 获取价税合计保留两位小数
     *
     * @return invoice_total_price_tax - 价税合计保留两位小数
     */
    public String getInvoiceTotalPriceTax() {
        return invoiceTotalPriceTax;
    }

    /**
     * 设置价税合计保留两位小数
     *
     * @param invoiceTotalPriceTax 价税合计保留两位小数
     */
    public void setInvoiceTotalPriceTax(String invoiceTotalPriceTax) {
        this.invoiceTotalPriceTax = invoiceTotalPriceTax;
    }

    /**
     * 获取签名值参数默认为：0000004282000000
     *
     * @return signature_parameter - 签名值参数默认为：0000004282000000
     */
    public String getSignatureParameter() {
        return signatureParameter;
    }

    /**
     * 设置签名值参数默认为：0000004282000000
     *
     * @param signatureParameter 签名值参数默认为：0000004282000000
     */
    public void setSignatureParameter(String signatureParameter) {
        this.signatureParameter = signatureParameter;
    }

    /**
     * 获取设备类型 0税控服务器，1税控盘
     *
     * @return device_type - 设备类型 0税控服务器，1税控盘
     */
    public String getDeviceType() {
        return deviceType;
    }

    /**
     * 设置设备类型 0税控服务器，1税控盘
     *
     * @param deviceType 设备类型 0税控服务器，1税控盘
     */
    public void setDeviceType(String deviceType) {
        this.deviceType = deviceType;
    }

    /**
     * 获取税控盘编号设备类型为1时必填
     *
     * @return tax_disk_no - 税控盘编号设备类型为1时必填
     */
    public String getTaxDiskNo() {
        return taxDiskNo;
    }

    /**
     * 设置税控盘编号设备类型为1时必填
     *
     * @param taxDiskNo 税控盘编号设备类型为1时必填
     */
    public void setTaxDiskNo(String taxDiskNo) {
        this.taxDiskNo = taxDiskNo;
    }

    /**
     * 获取税控盘口令设备类型为1时必填
     *
     * @return tax_disk_key - 税控盘口令设备类型为1时必填
     */
    public String getTaxDiskKey() {
        return taxDiskKey;
    }

    /**
     * 设置税控盘口令设备类型为1时必填
     *
     * @param taxDiskKey 税控盘口令设备类型为1时必填
     */
    public void setTaxDiskKey(String taxDiskKey) {
        this.taxDiskKey = taxDiskKey;
    }

    /**
     * 获取税务数字证书密码设备类型为1时必填
     *
     * @return tax_disk_password - 税务数字证书密码设备类型为1时必填
     */
    public String getTaxDiskPassword() {
        return taxDiskPassword;
    }

    /**
     * 设置税务数字证书密码设备类型为1时必填
     *
     * @param taxDiskPassword 税务数字证书密码设备类型为1时必填
     */
    public void setTaxDiskPassword(String taxDiskPassword) {
        this.taxDiskPassword = taxDiskPassword;
    }

    /**
     * 获取商品编码版本号
     *
     * @return goods_code_version - 商品编码版本号
     */
    public String getGoodsCodeVersion() {
        return goodsCodeVersion;
    }

    /**
     * 设置商品编码版本号
     *
     * @param goodsCodeVersion 商品编码版本号
     */
    public void setGoodsCodeVersion(String goodsCodeVersion) {
        this.goodsCodeVersion = goodsCodeVersion;
    }

    /**
     * 获取综合税率
     *
     * @return consolidated_tax_rate - 综合税率
     */
    public String getConsolidatedTaxRate() {
        return consolidatedTaxRate;
    }

    /**
     * 设置综合税率
     *
     * @param consolidatedTaxRate 综合税率
     */
    public void setConsolidatedTaxRate(String consolidatedTaxRate) {
        this.consolidatedTaxRate = consolidatedTaxRate;
    }

    /**
     * 获取通知单编号
     *
     * @return notification_no - 通知单编号
     */
    public String getNotificationNo() {
        return notificationNo;
    }

    /**
     * 设置通知单编号
     *
     * @param notificationNo 通知单编号
     */
    public void setNotificationNo(String notificationNo) {
        this.notificationNo = notificationNo;
    }

    /**
     * 获取备注
     *
     * @return remarks - 备注
     */
    public String getRemarks() {
        return remarks;
    }

    /**
     * 设置备注
     *
     * @param remarks 备注
     */
    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    /**
     * 获取发票代码税控baiwang.invoice.open（发票开具）返回
     *
     * @return invoice_code - 发票代码税控baiwang.invoice.open（发票开具）返回
     */
    public String getInvoiceCode() {
        return invoiceCode;
    }

    /**
     * 设置发票代码税控baiwang.invoice.open（发票开具）返回
     *
     * @param invoiceCode 发票代码税控baiwang.invoice.open（发票开具）返回
     */
    public void setInvoiceCode(String invoiceCode) {
        this.invoiceCode = invoiceCode;
    }

    /**
     * 获取发票号码税控baiwang.invoice.open（发票开具）返回
     *
     * @return invoice_no - 发票号码税控baiwang.invoice.open（发票开具）返回
     */
    public String getInvoiceNo() {
        return invoiceNo;
    }

    /**
     * 设置发票号码税控baiwang.invoice.open（发票开具）返回
     *
     * @param invoiceNo 发票号码税控baiwang.invoice.open（发票开具）返回
     */
    public void setInvoiceNo(String invoiceNo) {
        this.invoiceNo = invoiceNo;
    }

    /**
     * 获取开票日期税控baiwang.invoice.open（发票开具）返回，格式：yyyyMMddHHmmss
     *
     * @return invoice_date - 开票日期税控baiwang.invoice.open（发票开具）返回，格式：yyyyMMddHHmmss
     */
    public String getInvoiceDate() {
        return invoiceDate;
    }

    /**
     * 设置开票日期税控baiwang.invoice.open（发票开具）返回，格式：yyyyMMddHHmmss
     *
     * @param invoiceDate 开票日期税控baiwang.invoice.open（发票开具）返回，格式：yyyyMMddHHmmss
     */
    public void setInvoiceDate(String invoiceDate) {
        this.invoiceDate = invoiceDate;
    }

    /**
     * 获取税控码税控baiwang.invoice.open（发票开具）返回，对应发票的密码区
     *
     * @return tax_control_code - 税控码税控baiwang.invoice.open（发票开具）返回，对应发票的密码区
     */
    public String getTaxControlCode() {
        return taxControlCode;
    }

    /**
     * 设置税控码税控baiwang.invoice.open（发票开具）返回，对应发票的密码区
     *
     * @param taxControlCode 税控码税控baiwang.invoice.open（发票开具）返回，对应发票的密码区
     */
    public void setTaxControlCode(String taxControlCode) {
        this.taxControlCode = taxControlCode;
    }

    /**
     * 获取校验码税控baiwang.invoice.open（发票开具）返回
     *
     * @return invoice_check_code - 校验码税控baiwang.invoice.open（发票开具）返回
     */
    public String getInvoiceCheckCode() {
        return invoiceCheckCode;
    }

    /**
     * 设置校验码税控baiwang.invoice.open（发票开具）返回
     *
     * @param invoiceCheckCode 校验码税控baiwang.invoice.open（发票开具）返回
     */
    public void setInvoiceCheckCode(String invoiceCheckCode) {
        this.invoiceCheckCode = invoiceCheckCode;
    }

    /**
     * 获取打印类型税票打印：（税控盘必填）0：发票打印，1：清单打印
     *
     * @return invoice_print_type - 打印类型税票打印：（税控盘必填）0：发票打印，1：清单打印
     */
    public String getInvoicePrintType() {
        return invoicePrintType;
    }

    /**
     * 设置打印类型税票打印：（税控盘必填）0：发票打印，1：清单打印
     *
     * @param invoicePrintType 打印类型税票打印：（税控盘必填）0：发票打印，1：清单打印
     */
    public void setInvoicePrintType(String invoicePrintType) {
        this.invoicePrintType = invoicePrintType;
    }

    /**
     * 获取打印日期税票打印：（税控盘必填）默认为1
     *
     * @return invoice_print_mode - 打印日期税票打印：（税控盘必填）默认为1
     */
    public String getInvoicePrintMode() {
        return invoicePrintMode;
    }

    /**
     * 设置打印日期税票打印：（税控盘必填）默认为1
     *
     * @param invoicePrintMode 打印日期税票打印：（税控盘必填）默认为1
     */
    public void setInvoicePrintMode(String invoicePrintMode) {
        this.invoicePrintMode = invoicePrintMode;
    }

    /**
     * 获取打印方式格式：yyyyMMddHHmmss
     *
     * @return invoice_print_date - 打印方式格式：yyyyMMddHHmmss
     */
    public String getInvoicePrintDate() {
        return invoicePrintDate;
    }

    /**
     * 设置打印方式格式：yyyyMMddHHmmss
     *
     * @param invoicePrintDate 打印方式格式：yyyyMMddHHmmss
     */
    public void setInvoicePrintDate(String invoicePrintDate) {
        this.invoicePrintDate = invoicePrintDate;
    }

    /**
     * 获取二维码税控baiwang.invoice.open（发票开具）返回
     *
     * @return invoice_qrcode - 二维码税控baiwang.invoice.open（发票开具）返回
     */
    public String getInvoiceQrcode() {
        return invoiceQrcode;
    }

    /**
     * 设置二维码税控baiwang.invoice.open（发票开具）返回
     *
     * @param invoiceQrcode 二维码税控baiwang.invoice.open（发票开具）返回
     */
    public void setInvoiceQrcode(String invoiceQrcode) {
        this.invoiceQrcode = invoiceQrcode;
    }
}